/*
    ** 任务管理组件
    ** Task清单只记录在独立线程中，持续不断的do st的任务
*/

#ifndef TASKMANAGER_H
#define TASKMANAGER_H


#include "MU_API.h"
#include <functional>
#include <QMutex>
#include <QScopedPointer>


class TaskManager
{
public:
    TaskManager();

    static TaskManager* GetInstance(){
        static QMutex mutex;
        static QScopedPointer<TaskManager> inst;
        if (Q_UNLIKELY(!inst)) {
            mutex.lock();
            if (!inst) {
                inst.reset(new TaskManager);
            }
            mutex.unlock();
        }
        return inst.data();
    }

    /// 当前任务是否处于暂停态  [true] 暂停   [false]非暂停
    bool getProcess(int index){
        bool ret = ( currentStatus.run_Process >> index )& 0x01;
        return  ret;
    }


    MU_RETURNS stopATasks(UC2);       ///   终止一个任务事件

    MU_RETURNS stopATask(MU_TASK_INDEX);                    ///   终止一个任务事件
    /**
     * @brief setATask
     * @param [0] 需要设置的模块索引      [1] 状态
     * @return 返回的状态码
     * @details 设置一个模块的状态，是否暂停状态
     */
    MU_RETURNS setATask(MU_TASK_INDEX ,bool prt = true);         ///   设置一个任务状态


private:

};

#endif // TASKMANAGER_H
